<?php

class habitacionesM extends CI_Model {

    public function __construct() {
        $this->load->database();
    }

    // I N S E R T 
    public function crearCategoria($establecimiento, $data, $tipo) {
        $query = "INSERT INTO categoria(nombre,capacidad_estandar,capacidad_adicional,prioridad,descripcion,id_tipo_habitacion,id_establecimiento)VALUES ('{$data['nombre']}','{$data['capacidad_estandar']}','{$data['capacidad_adicional']}','{$data['prioridadCategoria']}','{$data['descripcion']}','$tipo','$establecimiento')";
        $this->db->query($query);
        $categoria = $this->getLastValue("categoria", "id_categoria");
        $temporadas = $this->getTemporadas($data['establecimiento']);
        foreach ($temporadas as $temporada) {
            $query = "INSERT INTO categoria_x_temporada(id_categoria,id_temporada) VALUES('{$categoria}','{$temporada->id_temporada}')";
            $this->db->query($query);
        }

        foreach ($temporadas as $temporada) {
            for ($i = 1; $i <= $data['capacidad_estandar']; $i++) {
                $query = "INSERT INTO tarifa_x_persona(id_temporada,id_categoria,n_personas) VALUES('{$temporada->id_temporada}','{$categoria}','$i')";
                $this->db->query($query);
            }
        }
    }

    public function crearHabitacion($data) {
        $query = "INSERT INTO cuarto(nombre,tipo,id_categoria,prioridad) VALUES('{$data['nombre']}','{$data['tipo']}','{$data['id_categoria']}','{$data['prioridad']}')";
        $this->db->query($query);
    }

    // E D I T A R
    function editarCategoria($data) {
        $query = "UPDATE categoria SET nombre='{$data['nombre']}', capacidad_estandar='{$data['capacidad_estandar']}', capacidad_adicional='{$data['capacidad_adicional']}',prioridad='{$data['prioridadCategoria']}', descripcion='{$data['descripcion']}' WHERE id_categoria='{$data['id_categoria']}'";
        $this->db->query($query);
        //eliminamos o creamos las nuevas tarifas
        if ($data['estandar'] > $data['capacidad_estandar']) {
            $query = "DELETE FROM tarifa_x_persona WHERE id_categoria='{$data['id_categoria']}' AND n_personas>{$data['capacidad_estandar']}";
            $this->db->query($query);
        } else if ($data['estandar'] < $data['capacidad_estandar']) {
            $temporadas = $this->getTemporadas($data['establecimiento']);
            foreach ($temporadas as $temporada) {
                for ($i = $data['estandar'] + 1; $i <= $data['capacidad_estandar']; $i++) {
                    $query = "INSERT INTO tarifa_x_persona(id_temporada,id_categoria,n_personas) VALUES('{$temporada->id_temporada}','{$data['id_categoria']}','$i')";
                    $this->db->query($query);
                }
            }
        }
    }

    function editarCuarto($est, $cat, $data) {
        $query = "UPDATE cuarto SET nombre='{$data['nombre']}',prioridad='{$data['prioridad']}' WHERE id_cuarto='{$data['id_cuarto']}' AND 1=(SELECT count(*) FROM categoria WHERE id_categoria='$cat' AND id_establecimiento='$est')";
        $this->db->query($query);
    }

    // S E L E C T

    public function getTemporadas($establecimiento) {
        $query = "SELECT id_temporada FROM temporada WHERE id_establecimiento='$establecimiento'";
        return $this->db->query($query)->result();
    }

    public function getIdTipoHabitacion($tipo, $establecimiento) {
        $query = "SELECT id_tipo_habitacion FROM tipo_habitacion WHERE tipo='$tipo' AND id_establecimiento='$establecimiento'";
        $value = $this->db->query($query)->result_array();
        return $value[0]['id_tipo_habitacion'];
    }

    public function getLastValue($tabla, $atributo) {
        $query = "SELECT coalesce(max($atributo),0) as result FROM $tabla";
        $result = $this->db->query($query)->result();
        $result = $result[0];
        return $result->result;
    }

    public function getCategorias($id_tipo) {
        $query = "SELECT * FROM categoria WHERE id_tipo_habitacion='$id_tipo' AND eliminado=0 order by prioridad,nombre";
        return $this->db->query($query)->result();
    }

    public function getAllCuartos($establecimiento) {
        $query = "SELECT cua.id_cuarto, cua.nombre, cat.nombre nombre_categoria
                FROM categoria cat,cuarto cua
                WHERE cat.id_categoria=cua.id_categoria AND cat.id_establecimiento='{$establecimiento}'
                AND cat.eliminado=0 AND cua.eliminado=0";
        return $this->db->query($query)->result();
    }

    public function getHabitaciones($id_categoria) {
        $query = "SELECT * FROM cuarto WHERE id_categoria='$id_categoria' AND eliminado=0 ORDER BY prioridad,nombre";
        return $this->db->query($query)->result();
    }
    
     public function getCuartos($id_categoria) {
        $query = "SELECT * FROM cuarto WHERE id_categoria='$id_categoria' AND eliminado=0 ORDER BY nombre";
        return $this->db->query($query)->result();
    }

    public function getCategoria($categoria) {
        $query = "SELECT * FROM categoria WHERE id_categoria='$categoria' AND eliminado=0";
        return $this->db->query($query)->result();
    }

    // E L I M I N A R
    function eliminarCategoria($data) {
        $query = "UPDATE categoria SET eliminado = 1 WHERE id_categoria='{$data['id_categoria']}'";
        $this->db->query($query);
    }

    function eliminarCuarto($data) {
        $query = "UPDATE cuarto SET eliminado = 1 WHERE id_cuarto='{$data['id_cuarto']}'";
        $this->db->query($query);
    }

    function query($query) {
        return $this->db->query($query)->result();
    }

}